package gui.arbre;

import java.awt.event.*;

import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.MutableTreeNode;

import UML.Classe;
import UML.Lien;

/**
 * Menu clique droit de l'arbre
 * Permet d'effacer une feuille de l'arbre
 * 
 * @author Delmas Gabriel
 */
public class ArbreJPopupMenu extends JPopupMenu implements ActionListener
{
	private static final long serialVersionUID = 1L;
	
	private Arbre arbre;
	private DefaultMutableTreeNode node=null;
	private JMenuItem itemSupprimer;
	
	/**
	 * Constructeur prenant l'arbre en parametre
	 * @param arbre dans lequel le menupopup aparait
	 */
	public ArbreJPopupMenu(Arbre arbre)
	{
		this.arbre=arbre;
		//Creation du sous menu Supprimer
		itemSupprimer = new JMenuItem("Supprimer");
		this.add(itemSupprimer);	
		itemSupprimer.addActionListener(this);

	}
	
	/**
	 * Permet de definir le noeud selectionne
	 * @param node le noeud selectionne
	 */
	public void setObjetSelectionne(DefaultMutableTreeNode node)
	{
		this.node=node;
	}
	
	/**
	 * Gestion des evenements
	 */
	public void actionPerformed(ActionEvent e)
    {
		if(e.getActionCommand()=="Supprimer")
    	{
			if(node.getUserObject() instanceof Classe)
			{
				((DefaultTreeModel) this.arbre.getModel()).removeNodeFromParent((MutableTreeNode)node);
				this.arbre.noeudClasses.remove(node.getUserObject());
			}
			if(node.getUserObject() instanceof Lien)
			{
				((DefaultTreeModel) this.arbre.getModel()).removeNodeFromParent((MutableTreeNode)node);
				this.arbre.noeudAgregation.remove(node.getUserObject());
				this.arbre.noeudHeritage.remove(node.getUserObject());
			}
    		this.setVisible(false);
    	}
    }
}
